package 代码coding题OR模拟题;
/**
 * 注意 Java中 有这个 直接求出 二进制 1 的 个数的 函数
 * Integer.bitCount(i);直接 返回 二进制 中 i 中 1 的个数
 * 
 * 题解连接 
 * https://leetcode-cn.com/problems/prime-number-of-set-bits-in-binary-representation/solution/by-ac_oier-w50x/
 * @author I adore you
 *
 */
public class leetcode762二进制表示中质数个计算置位 {
	
	public static void main(String []args) {
		int value = 15;
		System.out.println(isPrime(value));
		System.out.println(countOne(value));
		System.out.println(solution(10,15));
	}
	public static int solution(int left,int right) {
		int count = 0;
		for(int i = left; i <= right;i++ ) {
			if(isPrime(countOne(i))) {
				count++;
			}
		}
		return count;
	}
	public static int countOne(int value) {
		int count = 0;
		int temp = 0;
		while(value != 0) {
			temp = value & -value;
//			if(temp != 0) {
//			count++;
//			}
				count++;
			value ^= temp;
		}
		return count;
	}
	public static boolean isPrime(int value) {
		if(value <= 1) {
			return false;
		}
		if(value == 2) {
			return true;
		}
		for(int i = 2 ; i<= Math.pow(value, 0.5) ;i++) {
			if(value % i == 0) {
				return false;
			}
		}
		return true;
	}
	
}
